﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AcademiaDAO;
using AcademiaEntidades;
using System.Web.Security;

public partial class Administracion_ConsultaCobros : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //Para controlar el botan para atras del navegador
        if (Session["Usuario"] == null)
            Response.Redirect("~/Publico/Login.aspx");
        // lblLegajo.Text = DateTime.Now.ToLongTimeString();
        if (!IsPostBack)
        {
            ddlAuxMonto.Items.Add(new ListItem("Menor a", "<="));
            ddlAuxMonto.Items.Add(new ListItem("Igual a", "="));
            ddlAuxMonto.Items.Add(new ListItem("Mayor a", ">="));
            ddlAuxMonto.SelectedIndex = 1;

            ViewState["direccion"] = DireccionOrden.Ascendente;
            ViewState["orden"] = "NumeroFactura";
            cargarSesion();//Cargar los datos de session
        }
    }
    private void cargarSesion()
    {
        lblUsuarioLogueado.Text = ((Usuarios)Session["Usuario"]).Usuario;
        lblRolLogueado.Text = ((Usuarios)Session["Usuario"]).Rol;
    }
    protected void btnConsultar_Click(object sender, EventArgs e)
    {
        if (IsValid)
        {
            CargarConsulta();
        }
    }

    private void CargarConsulta()
    {
        string orden = ViewState["orden"].ToString();
        DireccionOrden direccion = (DireccionOrden)ViewState["direccion"];

        int? legajo = null;

        if (!string.IsNullOrEmpty(txtLegajo.Text.Trim()))
        {
            legajo = int.Parse(txtLegajo.Text.Trim());
        }

        int? numeroFactura = null;

        if (!string.IsNullOrEmpty(txtNumeroFactura.Text.Trim()))
        {
            numeroFactura = int.Parse(txtNumeroFactura.Text.Trim());
        }

        string auxMonto = null;
        decimal? monto = null;

        if (!string.IsNullOrEmpty(txtMonto.Text.Trim()))
        {
            auxMonto = ddlAuxMonto.SelectedValue.ToString();
            monto = decimal.Parse(txtMonto.Text.Trim(), System.Globalization.CultureInfo.InvariantCulture);
        }

        string nombre = null;

        if (!string.IsNullOrEmpty(txtNombre.Text.Trim()))
        {
            nombre = txtNombre.Text.Trim();
        }

        string apellido = null;

        if (!string.IsNullOrEmpty(txtApellido.Text.Trim()))
        {
            apellido = txtApellido.Text.Trim();
        }

        DateTime? fechaDesde = null;

        if (!string.IsNullOrEmpty(txtFechaDesde.Text.Trim()))
        {
            fechaDesde = DateTime.Parse(txtFechaDesde.Text.Trim());
        }

        DateTime? fechaHasta = null;

        if (!string.IsNullOrEmpty(txtFechaHasta.Text.Trim()))
        {
            fechaDesde = DateTime.Parse(txtFechaHasta.Text.Trim());
        }

        decimal montoTotal;
        gvCobros.DataSource = CobroDAO.ObtenerTodosReporte(orden, direccion, legajo, /*id cobro null*/null, numeroFactura, auxMonto, monto, nombre, apellido, fechaDesde, fechaHasta, out montoTotal);
        gvCobros.DataBind();
        gvCobros.SelectedIndex = -1;
        gvCobros.Visible = true;
        gvDetalle.SelectedIndex = -1;
        gvDetalle.Visible = false;
        lblMontoTotal.Text = "Total: ";
        lblResultadoMontoTotal.Text = string.Format("{0:c}", montoTotal);

        if (gvCobros.Rows.Count == 0)
        {
            lblMontoTotal.Text = string.Empty;
            lblResultadoMontoTotal.Text = string.Empty;
        }
    }

    protected void btnLimpiar_Click(object sender, EventArgs e)
    {
        Limpiar();
    }

    private void Limpiar()
    {
        gvCobros.Visible = false;
        gvDetalle.Visible = false;
        lblResultadoMontoTotal.Text = string.Empty;
        lblMontoTotal.Text = string.Empty;
        txtLegajo.Text = string.Empty;
        txtNombre.Text = string.Empty;
        txtApellido.Text = string.Empty;
        txtNumeroFactura.Text = string.Empty;
        txtMonto.Text = string.Empty;
        txtFechaDesde.Text = string.Empty;
        txtFechaHasta.Text = string.Empty;
        txtLegajo.Focus();
    }

    protected void gvCobros_SelectedIndexChanged(object sender, EventArgs e)
    {
        int idCobro = int.Parse(gvCobros.SelectedDataKey.Value.ToString());
        gvDetalle.DataSource = CobroDAO.ObtenerDetallesCobroReporte(idCobro);
        gvDetalle.DataBind();
        gvDetalle.Visible = true;
    }

    protected void gvCobros_Sorting(object sender, GridViewSortEventArgs e)
    {
        string orden = e.SortExpression;

        DireccionOrden direccion = DireccionOrden.Ascendente;
        if (ViewState["orden"].ToString().Equals(orden))
        {
            DireccionOrden actual = (DireccionOrden)ViewState["direccion"];
            if (actual == DireccionOrden.Ascendente)
            {
                actual = DireccionOrden.Descendente;
            }
            else
            {
                actual = DireccionOrden.Ascendente;
            }
            ViewState["direccion"] = actual;
        }
        else
        {
            ViewState["direccion"] = direccion;
        }
       
        ViewState["orden"] = orden;
        CargarConsulta();
    }
    protected void btnCerrarSesion_Click(object sender, EventArgs e)
    {
        ////Eliminar la cookie
        //Context.Response.Cookies[FormsAuthentication.FormsCookieName].Expires = DateTime.Now;
        ////Terminar la Sesion
        //FormsAuthentication.SignOut();
        //Response.Redirect("~/Publico/InicioWF.aspx");

        //************************************************************
        //Otra forma de eliminar la cookie del equipo del usuario
        if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
        {
            HttpCookie paraBorrar = new HttpCookie(FormsAuthentication.FormsCookieName);
            paraBorrar.Expires = DateTime.Now.AddDays(-1d);
            Response.Cookies.Add(paraBorrar);
        }
        FormsAuthentication.SignOut();
        Session.Abandon();
        Response.Redirect("~/Publico/InicioWF.aspx");
    }
}